package com.zjsru.oneDay202204;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: likew
 * @Date: 2022/4/12
 *
 * 写字符串需要的行数
 * 示例 1:
 * 输入:
 * widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
 * S = "abcdefghijklmnopqrstuvwxyz"
 * 输出: [3, 60]
 * 解释:
 * 所有的字符拥有相同的占用单位10。所以书写所有的26个字母，
 * 我们需要2个整行和占用60个单位的一行。
 *
 * 示例 2:
 * 输入:
 * widths = [4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
 * S = "bbbcccdddaaa"
 * 输出: [2, 4]
 * 解释:
 * 除去字母'a'所有的字符都是相同的单位10，并且字符串 "bbbcccdddaa" 将会覆盖 9 * 10 + 2 * 4 = 98 个单位.
 * 最后一个字母 'a' 将会被写到第二行，因为第一行只剩下2个单位了。
 * 所以，这个答案是2行，第二行有4个单位宽度。
 *
 */
public class numberOfLines {
    public int[] numberOfLines(int[] widths, String s) {
        int a = 0,b =0;
        for (char c :s.toCharArray()) {
            int t = widths[c -'a'];
            if(b + t > 100 && ++a >= 0) b = t;
            else b += t;
        }
        if(b != 0) a++;
        int[] nums = new int[]{a,b};
        return nums;
    }
    
    public static void main(String[] args) {
        numberOfLines numberOfLines = new numberOfLines();
        int[] width = new int[]{4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
        String s = "bbbcccdddaaa";
        System.out.println(numberOfLines.numberOfLines(width, s));
    }
}
